package com.xqboss.apps.domain.nft;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.xqboss.apps.enums.category.CategoryNftTypeEnum;
import com.xqboss.apps.enums.category.CategoryTypeEnum;
import com.xqboss.common.annotation.Excel;
import com.xqboss.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 分类对象 category
 *
 * @author xqboss
 * @date 2023-08-02
 */
@ApiModel
public class Category extends BaseEntity {
    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    private String name;

    private String description;

    private Date deleteTime;

    private Integer isRoot;

    /**
     * 是否推荐
     */
    @Excel(name = "是否推荐")
    private Integer isRecommend;

    private Integer parentId;

    private String img;

    /**
     * 1商品 2福袋 3视频 4文章 5游戏库 6游戏商品
     */
    @Excel(name = "1藏品 2装备 3箱子")
    @ApiModelProperty("标签类型")
    private CategoryTypeEnum targetType;


    @Excel(name = "1藏品 2装备 3箱子")
    @ApiModelProperty("类别类型")
    private CategoryNftTypeEnum nftType;
    /**
     * 排序
     */
    @Excel(name = "排序")
    @TableField(value = "`index`" )
    private Integer index;

    private Integer online;

    private Integer level;

    public CategoryNftTypeEnum getNftType() {
        return nftType;
    }

    public void setNftType(CategoryNftTypeEnum nftType) {
        this.nftType = nftType;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }

    public void setDeleteTime(Date deleteTime) {
        this.deleteTime = deleteTime;
    }

    public Date getDeleteTime() {
        return deleteTime;
    }

    public void setIsRoot(Integer isRoot) {
        this.isRoot = isRoot;
    }

    public Integer getIsRoot() {
        return isRoot;
    }

    public void setIsRecommend(Integer isRecommend) {
        this.isRecommend = isRecommend;
    }

    public Integer getIsRecommend() {
        return isRecommend;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public Integer getParentId() {
        return parentId;
    }

    public void setImg(String img) {
        this.img = img;
    }

    public String getImg() {
        return img;
    }

    public void setTargetType(CategoryTypeEnum targetType) {
        this.targetType = targetType;
    }

    public CategoryTypeEnum getTargetType() {
        return targetType;
    }

    public void setIndex(Integer index) {
        this.index = index;
    }

    public Integer getIndex() {
        return index;
    }

    public void setOnline(Integer online) {
        this.online = online;
    }

    public Integer getOnline() {
        return online;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }

    public Integer getLevel() {
        return level;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("name", getName())
                .append("description", getDescription())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("deleteTime", getDeleteTime())
                .append("isRoot", getIsRoot())
                .append("isRecommend", getIsRecommend())
                .append("parentId", getParentId())
                .append("img", getImg())
                .append("targetType", getTargetType())
                .append("index", getIndex())
                .append("online", getOnline())
                .append("level", getLevel())
                .toString();
    }
}
